/**
 * 顺序递增分组 AscendingGroups
 */
export const THREE_ASCENDING_GROUPS = [
  [1, 2, 3], // 3个号码
  [4, 5, 6], // 3个号码
  [7, 8, 9], // 3个号码
  [10, 11, 12], // 3个号码
  [13, 14, 15], // 3个号码
  [16, 17, 18], // 3个号码
  [19, 20, 21], // 3个号码
  [22, 23, 24], // 3个号码
  [25, 26, 27], // 3个号码
  [28, 29, 30], // 3个号码
  [31, 32, 33], // 3个号码
  [34, 35, 36], // 3个号码
  [37, 38, 39], // 3个号码
  [40, 41, 42], // 3个号码
  [43, 44, 45], // 3个号码
  [46, 47, 48, 49] // 4个号码（剩余）
]

/**
 * 奇偶分组 OddEvenGroups
 */
export const THREE_ODD_EVEN_GROUPS = [
  [1, 3, 5], // 3个奇数
  [7, 9, 11], // 3个奇数
  [13, 15, 17], // 3个奇数
  [19, 21, 23], // 3个奇数
  [25, 27, 29], // 3个奇数
  [31, 33, 35], // 3个奇数
  [37, 39, 41], // 3个奇数
  [2, 4, 6], // 3个偶数
  [8, 10, 12], // 3个偶数
  [14, 16, 18], // 3个偶数
  [20, 22, 24], // 3个偶数
  [26, 28, 30], // 3个偶数
  [32, 34, 36], // 3个偶数
  [38, 40, 42], // 3个偶数
  [44, 46, 48], // 3个偶数
  [43, 45, 47, 49] // 4个剩余奇偶数
]

/**
 * 模3分组 ModuloThreeGroups
 */
export const THREE_MODULO_THREE_GROUPS = [
  [1, 4, 7], // 模3=1
  [10, 13, 16], // 模3=1
  [19, 22, 25], // 模3=1
  [28, 31, 34], // 模3=1
  [37, 40, 43], // 模3=1
  [2, 5, 8], // 模3=2
  [11, 14, 17], // 模3=2
  [20, 23, 26], // 模3=2
  [29, 32, 35], // 模3=2
  [38, 41, 44], // 模3=2
  [3, 6, 9], // 模3=0
  [12, 15, 18], // 模3=0
  [21, 24, 27], // 模3=0
  [30, 33, 36], // 模3=0
  [39, 42, 45], // 模3=0
  [46, 47, 48, 49] // 4个剩余
]

/**
 * 质数非质分组 PrimeNonPrimeGroups
 */
export const THREE_PRIME_NONPRIME_GROUPS = [
  [2, 3, 5], // 3个质数
  [7, 11, 13], // 3个质数
  [17, 19, 23], // 3个质数
  [29, 31, 37], // 3个质数
  [41, 43, 47], // 3个质数
  [1, 4, 6], // 3个非质数
  [8, 9, 10], // 3个非质数
  [12, 14, 15], // 3个非质数
  [16, 18, 20], // 3个非质数
  [21, 22, 24], // 3个非质数
  [25, 26, 27], // 3个非质数
  [28, 30, 32], // 3个非质数
  [33, 34, 35], // 3个非质数
  [36, 38, 39], // 3个非质数
  [40, 42, 44], // 3个非质数
  [45, 46, 48, 49] // 4个剩余非质数
]

/**
 * 尾数分组 MantissaGroups
 */
export const THREE_MANTISSA_GROUPS = [
  [1, 11, 21], // 尾数1
  [2, 12, 22], // 尾数2
  [3, 13, 23], // 尾数3
  [4, 14, 24], // 尾数4
  [5, 15, 25], // 尾数5
  [6, 16, 26], // 尾数6
  [7, 17, 27], // 尾数7
  [8, 18, 28], // 尾数8
  [9, 19, 29], // 尾数9
  [10, 20, 30], // 尾数0
  [31, 32, 33], // 尾数1-3
  [34, 35, 36], // 尾数4-6
  [37, 38, 39], // 尾数7-9
  [40, 41, 42], // 尾数0-2
  [43, 44, 45], // 尾数3-5
  [46, 47, 48, 49] // 剩余尾数
]

/**
 * 对称分组 SymmetricGroups
 */
export const THREE_SYMMETRIC_GROUPS = [
  [1, 49, 25], // 从两端到中心对称分布
  [2, 48, 26], // 从两端到中心对称分布
  [3, 47, 27], // 从两端到中心对称分布
  [4, 46, 28], // 从两端到中心对称分布
  [5, 45, 29], // 从两端到中心对称分布
  [6, 44, 30], // 从两端到中心对称分布
  [7, 43, 31], // 从两端到中心对称分布
  [8, 42, 32], // 从两端到中心对称分布
  [9, 41, 33], // 从两端到中心对称分布
  [10, 40, 34], // 从两端到中心对称分布
  [11, 39, 35], // 从两端到中心对称分布
  [12, 38, 36], // 从两端到中心对称分布
  [13, 37, 24], // 从两端到中心对称分布
  [14, 23, 15], // 从两端到中心对称分布
  [16, 17, 22], // 从两端到中心对称分布
  [18, 19, 20, 21] // 剩余号码
]

/**
 * 隔数分组 SkippedGroups
 */
export const THREE_SKIPPED_GROUPS = [
  [1, 5, 9], // 每隔3个号码
  [13, 17, 21], // 每隔3个号码
  [25, 29, 33], // 每隔3个号码
  [37, 41, 45], // 每隔3个号码
  [2, 6, 10], // 每隔3个号码
  [14, 18, 22], // 每隔3个号码
  [26, 30, 34], // 每隔3个号码
  [38, 42, 46], // 每隔3个号码
  [3, 7, 11], // 每隔3个号码
  [15, 19, 23], // 每隔3个号码
  [27, 31, 35], // 每隔3个号码
  [39, 43, 47], // 每隔3个号码
  [4, 8, 12], // 每隔3个号码
  [16, 20, 24], // 每隔3个号码
  [28, 32, 36], // 每隔3个号码
  [40, 44, 48, 49] // 剩余号码
]

export const THREE_GROUP_MAP = {
  THREE_ASCENDING_GROUPS,
  THREE_ODD_EVEN_GROUPS,
  THREE_MODULO_THREE_GROUPS,
  THREE_PRIME_NONPRIME_GROUPS,
  THREE_MANTISSA_GROUPS,
  THREE_SYMMETRIC_GROUPS,
  THREE_SKIPPED_GROUPS
}
